import dayjs from 'dayjs'

/**
 * 格式化日期
 * @param date 日期
 * @param format 格式
 */
export function formatDate(date: string | Date, format = 'YYYY-MM-DD HH:mm:ss') {
  return dayjs(date).format(format)
}

/**
 * 格式化日期或计算天数
 * @param dateStr 日期字符串
 */
export function formatDataTime(dateStr: string): string {
  const today = dayjs()
  const inputDate = dayjs(dateStr)

  // 检查是否在今年
  if (today.year() === inputDate.year()) {
    const formattedDate = inputDate.format('MM-DD')

    // 检查是否在7天内
    if (today.diff(inputDate, 'day') >= 0 && today.diff(inputDate, 'day') <= 7) {
      if (today.diff(inputDate, 'day') === 0) {
        // 同一天内
        const hoursAgo = today.diff(inputDate, 'hour')
        if (hoursAgo < 1) {
          // 不足一小时，计算分钟
          const minutesAgo = today.diff(inputDate, 'minute')
          if (minutesAgo === 0) {
            return '刚刚'
          }
          return `${minutesAgo}分钟前`
        }
        return `${hoursAgo}小时前`
      }
      return `${today.diff(inputDate, 'day')}天前`
    }

    return formattedDate
  }

  // 不在今年，直接返回原字符串
  return dateStr
}
